Five-error correction system

ABSTRACT

An error correcting system transforms a degree-five error locator polynomial σ(x) into the polynomial w(y)=y 5  =b 2  y 2  +b 1  y+b 0 , where b 1  =0 or 1, and y=σ(x), and determines the roots of σ(x) based on the roots of w(y). The polynomial w(y) has (2 M ) 2  solutions over GF(2 M ), rather than (2 M ) 5  solutions, since for any solution with b 2  =h 2 , b 0  =h 0  and b 1  =1, there is no such solution with b 2  =h 2 , b 0  =h 0  and b 1  =0. Conversely, if there is such a solution with b 1  =0 there are no such solutions with b 1  =1. The system can thus use a table that has 2 2M  entries and is addressed by {b 2 , b 0  }. The table produces roots y=r i , i=0, 1, 2, 3, 4, and the system then transforms the roots y=r i  to the roots of σ(x) by calculating x=σ -1  (y). To further reduce the overall table storage needs, the table may include in each entry four roots r i , i=0, 1, 2, 3, and the system then calculates the associated fifth root r 4  by adding the stored roots. The size of the look-up table can be even further reduced by (i) segmenting the Galois Field (2 M ) into conjugate classes; (ii) determining which of the classes contain values of b 0  that correspond to solutions of w(y) with five distinct roots; (iii) representing each of these classes, respectively, by a single value of b 0  &#39;=(b 0 ) 2 .spsp.k ; and (iv) including in the table for each class only those solutions that correspond to representative values of b 0  &#39;. The table then contains a relatively small number of sets of roots of each of the classes, with each set associated with a particular value of b 2  &#39;=b 2   2 .spsp.k. The roots of w(y) are determined by finding the value of k that produces b 0  &#39; and b 2  &#39;, entering the look-up table using {b 0  &#39;, b 2  &#39;}, raising the roots r i  &#39; produced by the table to the power -2 k  to produce y=r i , and then transforming the result into the roots of σ(x) by x=σ -1  (y).

FIELD OF THE INVENTION

This invention relates generally to data processing systems and, moreparticularly, to a system for decoding and correcting errors in datausing an error correction code.

BACKGROUND OF THE INVENTION

Data stored on magnetic media, such as a magnetic disks, are typicallystored in encoded form, so that errors in the stored data can possiblybe corrected. The errors may occur, for example, because of inter-symbolinterference, a defect in the disk, or noise. As the density of the datastored on the disk increases, more errors are likely, and the system isrequired to correct greater numbers of errors, which include greaternumbers of burst errors. A burst error is typically defined as acontiguous number of symbols in which the first symbol and the lastsymbol are erroneous. The speed with which the system corrects theerrors, including the burst errors, is important to the overall speedwith which the system processes the data.

Prior to recording, multiple-bit data symbols are encoded using an errorcorrection code (ECC). When the data symbols are retrieved from the diskand demodulated, the ECC is employed to, as the name implies, correctthe erroneous data.

Specifically, before a string of k data symbols is written to a disk, itis mathematically encoded using an (n, k) ECC to form n-k ECC symbols.The ECC symbols are then appended to the data string to form an n-symbolerror correction code word, which is then written to, or stored, on thedisk. When the data are read from the disk, the code words containingthe data symbols and ECC symbols are retrieved and mathematicallydecoded. During decoding, errors in the data are detected and, ifpossible, corrected through manipulation of the ECC symbols [for adetailed description of decoding see, Peterson and Weldon, ErrorCorrection Codes, 2nd Ed. MIT Press, 1972].

To correct multiple errors in strings of data symbols, the systemtypically uses an ECC that efficiently and effectively utilizes thevarious mathematical properties of sets of symbols known as Galoisfields. Galois fields are represented "GF (P^(M))", where "P" is a primenumber and "M" can be thought of as the number of digits, base "P", ineach element or symbol in the field. P usually has the value 2 indigital computer and disk drive applications and, therefore, M is thenumber of bits in each symbol. The ECC's commonly used with the GaloisFields are Reed Solomon codes or BCH codes.

There are essentially four major steps in decoding a corrupted code wordof a high rate Reed-Solomon code or a BCH code. The system firstdetermines error syndromes that are based on the results of amanipulation of the ECC symbols. Next, using the error syndromes, thesystem determines an error locator polynomial, which is a polynomialthat has the same degree as the number of errors. The system then findsthe roots of the error locator polynomial and from each root determinesthe location of an associated error in the code word. Finally, thesystem finds error values for the error locations.

The steps of determining the syndromes and finding the error locationsare the most time consuming in the error correction process. Thisinvention relates to the step of finding the error locations.

While "fast" methods for finding four or fewer errors are known, priorknown systems find the error locations for degree-five error locatorpolynomials by performing a time consuming Chien search. The Chiensearch is a systematic trial and error approach that involves tryingeach element of the applicable Galois field as a root of the errorlocator equation. If the Galois Field is relatively large, the Chiensearch takes a long time, and thus, slows the error correctionoperation. An alternative to the Chien search is to use a lookup tablethat is entered with the coefficients of the error locator polynomial.To correct five errors, the associated lookup table is prohibitivelylarge since it must include all possible distinct roots for thedegree-five error locator polynomials. In GF(2^(M)) the lookup table has(2^(M))⁵ entries. For systems that use 8-bit symbols, the lookup tablehas (2⁸)⁵ or 2⁴⁰ entries, with each entry including five 8-bit roots ofthe error locator polynomial. For many systems, the lookup table takesup too much storage space. This is particularly true as larger GaloisFields are used to protect more data.

SUMMARY OF THE INVENTION

An error correcting system transforms a degree-five error locatorpolynomial

    σ(x)=x.sup.5 +a.sub.4 x.sup.4 +a.sub.3 x.sup.3 +a.sub.2 x.sup.2 +a.sub.1 x+a.sub.0                                        [ 1]

into

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0           [ 2]

where b₁ =0 or 1, and y=t(x), and determines the roots of equation 1based on equation 2. Equation 2 has (2^(M)) solutions over GF(2^(M)),rather than (2^(M))⁵ since for any solution with b₂ =h₂, b₀ =h₀ and b₁=1, there is no such solution with b₂ =h₂, b₀ =h₀ and b₁ =0. Conversely,if there is such a solution with b₁ =0 there is no such solutions withb₁ =1. The system can therefore use a table that has 2^(2M) entrieswhich is addressed by {b₂, b₀ }. The table produces roots y=r_(i), i=0,1 . . . ,4, and the system then transforms the roots y=r_(i) to theroots of equation 1 by x=t⁻¹ (y) where t⁻¹ () is the inverse of t(). Thesize of the look-up table has thus been reduced from 2^(5M) entries to2^(2M) entries. To further reduce the overall table storage needs, thetable may include in each entry four roots r_(i), i=0, 1 . . . 3 and thesystem then calculates the associated fifth root r₄ by adding the storedroots.

The size of the look-up table can be even further reduced by (i)segmenting the Galois Field (2^(M)) into conjugate classes; (ii)determining which of the classes contain values of b₀ that correspond tosolutions of equation 2 with five distinct roots; (iii) representingeach of these classes, respectively, by a single value of b₀'=(b₀)².spsp.k ; and (iv) including in the table for each class onlythose solutions that correspond to the representative values of b₀ '. Asdiscussed in more detail below, the table contains a relatively smallnumber of sets of roots for each of the classes with each set associatedwith a particular value of b₂ '=b₂ ².spsp.k. The roots of equation 2 aredetermined by finding the value of k that produces b₀ ' and b₂ ',entering the look-up table using {b₀ ', b₂ '}, raising the roots r_(i) 'produced by the table to the power -2^(k) to produce y=r_(i), and thentransforming the result into the roots of equation 1 by x=t⁻¹ (y).

As discussed below, the overall size of the table can again be reducedby using a set of tiered smaller tables, one tier based on b₁ '=1 or 0,and a second tier based on the possible values of b₂ '. The storagerequirements of the table can then be further reduced by storing in eachtable entry four or fewer roots.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention description below refers to the accompanying drawings, ofwhich:

FIG. 1 is a functional block diagram of a system constructed inaccordance with the invention;

FIG. 2 is a functional block diagram of an alternative systemconstructed in accordance with the invention;

FIG. 3 is a diagram illustrating a two-tiered look-up table that may beused in the system of FIG. 2;

FIG. 4 is a flow chart of the operations of the system of FIGS. 2 and 3.

DETAILED DESCRIPTION OF AN ILLUSTRATIVE EMBODIMENT

A. The system

Referring to FIG. 1, an error correcting system 10 includes an errorlocator polynomial processor 12 that operates in a conventional mannerand manipulates a codeword that is encoded over GF(2^(M)) to produce anerror locator polynomial σ(x). If the degree "e" of the error locatorpolynomial is less than 5, the system uses a processor 15 to find theroots of the equation using known "fast" techniques. If the errorlocator polynomial has degree 5, that is:

    σ(x)=x.sup.5 +a.sub.4 x.sup.4 +a.sub.3 x.sup.3 +a.sub.2 x.sup.2 +a.sub.1 x+a.sub.0                                        [ 1]

the error locator polynomial processor 12 supplies the polynomial to apolynomial transform processor 14, which transforms the error locatorpolynomial to

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0           [ 2]

where b₁ equals either 0 or 1, and y=t(x). The operations of thetransform processor are discussed below in Section B.

In the embodiment of the system 10 shown in FIG. 1, a 2^(2M) entrylook-up table 16 is entered using as the address a concatenation of b₂and b₀. The look-up table produces sets of roots y=r_(i) with i=0, 1 . .. 4. The roots are supplied to a root transform processor 18, whichtransforms the roots y=r_(i) to x=z_(i), where x=t⁻¹ (y) and t⁻¹ () isthe inverse of t(). Using the five roots x=z_(i), an error correctorprocessor 20 determines five associated error values and corrects errorsin the data symbols of the codeword.

Preferably, the table 16 contains in each entry four roots y=r_(i) withi=0, 1 . . . 3. The fifth root is then determined by an adder 17 thatadds the four stored roots. For any degree-five polynomial, the sum ofthe roots is equal to the coefficient of the y⁴ term. Thus, r₀ +r₁ +r₂+r₃ +r₄ =b₄ and b₄ =0. Accordingly, r₄ is equal to the sum r₀ +r₁ +r₂+r₃.

In this first embodiment, the look-up table is reduced in size from theconventional 2^(5M) entries to 2^(2M) entries. For systems that use8-bit symbols, i.e., in which M=8, the size of the table is reduced from2⁴⁰ entries to 2¹⁶ entries. Also, the storage requirements per entry arereduced by storing only four M-bit roots per entry.

FIG. 2 depicts a second embodiment of the error correction system 10that includes a look-up table 22, which is reduced in size to a numberof entries that is a small percentage of 2^(M), and is thussignificantly smaller than the conventional table that has 2^(5M)entries, or even the reduced-size table 16 (FIG. 1) that has 2^(2M)entries. The look-up table 22 is entered using values b₂ ' and b₀ ' thatare associated with the b₂ and b₀ coefficients of equation 2 and withthe conjugate classes of GF(2^(M)), as discussed below.

A Galois Field GF(2^(M)) can be separated into a number of conjugateclasses, each with members α^(i), (α^(i)).spsp.2, (α^(i))².spsp.2,(α^(i))².spsp.3 . . . (α^(i))².spsp.k . . . (α^(i))².spsp.M-1, where αis the primitive element of the Galois Field. As an example, thethirteen conjugate classes of GF(2⁶) expressed as powers of α are:

    ______________________________________                                        α.sup.0                                                                 α.sup.1                                                                          α.sup.2                                                                          α.sup.4                                                                          α.sup.8                                                                        α.sup.16                                                                      α.sup.32                        α.sup.3                                                                          α.sup.6                                                                          α.sup.12                                                                         α.sup.24                                                                       α.sup.48                                                                      α.sup.33                        α.sup.5                                                                          α.sup.10                                                                         α.sup.20                                                                         α.sup.40                                                                       α.sup.34                              α.sup.7                                                                          α.sup.14                                                                         α.sup.28                                                                         α.sup.56                                                                       α.sup.49                                                                      α.sup.35                        α.sup.9                                                                          α.sup.18                                                                         α.sup.36                                              α.sup.11                                                                         α.sup.22                                                                         α.sup.44                                                                         α.sup.25                                                                       α.sup.50                                                                      α.sup.37                        α.sup.13                                                                         α.sup.26                                                                         α.sup.52                                                                         α.sup.41                                                                       α.sup.19                              α.sup.15                                                                         α.sup.30                                                                         α.sup.60                                                                         α.sup.57                                                                       α.sup.51                                                                      α.sup.39                        α.sup.21                                                                         α.sup.42                                                       α.sup.23                                                                         α.sup.46                                                                         α.sup.29                                                                         α.sup.58                                                                       α.sup.53                                                                      α.sup.43                        α.sup.27                                                                         α.sup.54                                                                         α.sup.45                                              α.sup.31                                                                         α.sup.62                                                                         α.sup.61                                                                         α.sup.59                                                                       α.sup.55                                                                      α.sup.47                        ______________________________________                                    

A given conjugate class can be represented by one of its members α¹since every member of the class is equal to (α¹)².spsp.k for k equal to1, . . . , M-1, and can be produced by the repeated squaring of α¹.

We are interested only in solutions to equation 2 that have fivedistinct roots, since these solutions point to correctable errors. Thevalues of the coefficient b₀ that are associated with equations of theform of equation 2 that have five distinct roots fall within a subset ofthe total number of conjugate classes. In the example, the subsetincludes "c" conjugate classes, where C≦13. The set of values of b₀ thatare of interest can thus by fully represented by the C conjugateclasses, and each class can, in turn, be represented by a single memberα^(l), which we refer to herein as b₀ '. The b₀ ' in this example is themember of the class that has the smallest exponent. The b₀ ' may insteadbe the member with the smallest or largest weight (number of 1s), themember with the smallest "value" determined by the placement of the 1sin the various symbols, or the member with the largest exponent. Foreach of the C values of b₀ ' there are a limited number of values of b₂' that correspond to the equations with five distinct roots.Accordingly, the table need contain only the roots that correspond tothe equations that have these particular values of the coefficients b₀ 'and b₂ '.

Consider an equation of the form

    h(x)=x.sup.n +q.sub.n-1 x.sup.n-1 +. . . +q.sub.1 x.sup.1 +q.sub.0 =0(3)

with s roots r_(i). Substituting the roots into equation 3

    h(r.sub.i)=r.sub.i.sup.n +q.sub.n-1 r.sub.i.sup.n-1 + . . . +q.sub.1 r.sub.i +q.sub.0 =0

and raising both sides to the power 2^(k) :

    [h(r.sub.i)].sup.2.spsp.k =[r.sub.i.sup.n +q.sub.n-1 r.sub.i.sup.n-1 + . . . +q.sub.1 r.sub.i +q.sub.0 ].sup.2.spsp.k =[r.sub.i.sup.2.spsp.k ].sup.n +[q.sub.n-1.sup.2.spsp.k ]*[r.sub.i.sup.2.spsp.k ].sup.n-1 + . . . +[q.sub.0.sup.2.spsp.k ]=0                                (3')

the roots of equation 3' are r_(i) '=(r_(i))².spsp.k for k=0, . . . ,M-1. Thus, an equation of the form of equation 2:

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.l y+b.sub.0 =0        (2)

raised to the 2^(k) power:

    w'(y)=(y.sup.5).sup.2.spsp.k +(b.sub.2).sup.2.spsp.k (y.sup.2.spsp.k).sup.2 +(b.sub.1).sup.2.spsp.k y.sup.2.spsp.k +(b.sub.0).sup.2.spsp.k =(y.sup.5).sup.2.spsp.k +b.sub.2 '(y.sup.2.spsp.k).sup.2 +b.sub.1 'y.sup.2.spsp.k +b.sub.0 '=0                              (5)

has roots (r_(i))².spsp.k =r_(i) ', where r_(i) are the roots ofequation 2.

The values b₂ ' and b₀ ' from equation 5 are used to enter the look-uptable 22 and extract the roots r_(i) ' of equation 5. The system, inroot transform processor 24, raises the roots r_(i) ' to the power-2^(k) to produce the roots y=r_(i) of equation 2. The root transformprocessor then produces the roots of equation 1 as x=t⁻¹ (y). Asdiscussed below in an example, the number of entries in the look-uptable 22 is a small percentage of 2^(M), which is significantly smallerthan the 2^(5M) entries of a conventional look-up table.

Continuing our example in GF(2⁶) an equation of the form of equation 2:

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0 =0

has five distinct roots in GF(2⁶) only if b₀ belongs to one of thefollowing five conjugate classes:

    ______________________________________                                        α.sup.0                                                                 α.sup.1                                                                          α.sup.2                                                                          α.sup.4                                                                          α.sup.8                                                                        α.sup.16                                                                      α.sup.32                        α.sup.5                                                                          α.sup.10                                                                         α.sup.20                                                                         α.sup.40                                                                       α.sup.17                                                                      α.sup.34                        α.sup.13                                                                         α.sup.26                                                                         α.sup.52                                                                         α.sup.41                                                                       α.sup.19                                                                      α.sup.38                        α.sup.27                                                                         α.sup.54                                                                         α.sup.45                                              ______________________________________                                    

These five conjugate classes can be fully represented by, for example, aset that contains for each class the member, b₀ ', with the smallestexponent. The classes are thus represented by the set:

    S={α.sup.0, α.sup.1, α.sup.5, α.sup.13, α.sup.27 }.

For each value of b₀ ' in this set there is a small set of possiblevalues for b₂ ' for which the equation w'(y) in the form of equation 5has five distinct solutions. Indeed, there are unique values of b₂ 'associated, respectively, with b₀ '=α⁰, α¹, α⁵ or α¹³, and two b₀ '=α²⁷.In this particular example there are no solutions with five distinctroots associated with possible values for b₂ ' associated with b₁ '=0.Accordingly, all table entries correspond to b₁ '=1.

All solutions with coefficients b₀ ' and b₂ ' that have five distinctroots are included in the following six-entry table:

                  TABLE 1                                                         ______________________________________                                        b.sub.0 '    b.sub.2 '  R.sub.i '                                             ______________________________________                                        α.sup.0                                                                              0          α.sup.9, α.sup.19, α.sup.21,                                α.sup.36                                        α.sup.1                                                                              α.sup.23                                                                           α.sup.22, α.sup.27, α.sup.43,                               α.sup.47                                        α.sup.5                                                                              α.sup.20                                                                           α.sup.16, α.sup.21, α.sup.40,                               α.sup.49                                        α.sup.13                                                                             α.sup.46                                                                           α.sup.24, α.sup.32, α.sup.41,                               α.sup.39                                        α.sup.27                                                                             α.sup.0                                                                            α.sup.9, α.sup.14, α.sup.23,                                α.sup.49                                        α.sup.27                                                                             α.sup.45                                                                           α.sup.6, α.sup.18, α.sup.37,                                α.sup.44                                        ______________________________________                                    

The table lists four roots of each address {b₀ 'b₂ '}, and the fifthroot is the sum r₀ +r₁ +r₂ +r₃ =r₄. Table 1 is substantially smallerthan the table used in conventional systems, which includes (2⁶)⁵, or2³⁰, entries.

To use Table 1, the values of b₀ '=(b₀)².spsp.k and b₂ '=(b₂)².spsp.kmust be determined, and thus, the value of k must be determined. Theprocessor 14 squares the coefficient b₀ from equation 2 and increments konce for each squaring operation. The squaring operations continue untileither the result is an element of the set S, or k exceeds M-1.Alternatively, the coefficient b₀ may be used to enter a table (notshown) that maps the value either to a value of k or to a "no solution"entry, which indicates that there are no solutions that have fivedistinct roots associated with that particular value of b₀. In theexample, this table maps b₀ =0 to the no solution entry.

Assuming (b₀)².spsp.k =b₀ ' is in set S, the system calculates b₂'=(b₂)².spsp.k and uses the values b₀ ' and b₂ ' to enter look-up table22, which contains Table 1, and extract therefrom the stored roots r_(i)'. As necessary, an adder 23 adds the stored roots to produce anassociated fifth root r₄ '. The system then in root transform processor24 raises the roots r_(i) ' to the -2^(k) power, to determine the rootsr_(i) of equation 2, where y=r_(i) =(r_(i) ')⁻².spsp.k. The rootprocessor 24 next converts the roots y=r_(i) to the roots of equation 1,x=z_(i).

The number of roots included in each table entry may be reduced to threeif the equation that includes the two unknown roots of equation 5.

Multiplying out the five factors (y-r_(i) ') of equation 5, and settingthe coefficient of the cubed term equal to zero the system produces:

    r.sub.4 '*(r.sub.0 '+r.sub.1 '+r.sub.2 '+r.sub.3 ')+r.sub.3 '*(r.sub.0 '+r.sub.1 '+r.sub.2 ')+r.sub.2 '*(r.sub.1 '+r.sub.0 ')+r.sub.1 '*r.sub.0 '=0                                                       [6]

where "*" represents multiplication. Using the values of r₀ ', r₁ ' andr₂ ' extracted from the table, equation 6 can be rewritten

    r.sub.4 '*(A+r.sub.3 ')+r.sub.3 '*A+B=0                    [7]

where A and B are known quantities, and A=r₀ '+r₁ '+r₂ ' and B=r₂ '*(r₁'+r₀ ')+r₁ '*r₀ '. Equation 7 can then be rewritten as:

    r.sub.4 '*r.sub.3 '+A*(r.sub.4 '+r.sub.3 ')+B=0            [8]

With

    r.sub.4 '*r.sub.3 '*r.sub.2 '*r.sub.1 '*r.sub.0 '=b.sub.0 '

and letting c=r₀ '*r₁ '*r₂ ', we can substitute into equation 8:##EQU1## to produce: ##EQU2## which is equal to ##EQU3## and thus r₃ 'can be determined from ##EQU4## where z is the only unknown, and r₄ 'can then be determined from r₃ '. The system then solves the quadraticequation using known techniques. Another way to produce the quadraticequation is to divide equation 5 by the factors (y+r_(i)) for i=0, 1, 2.

The number of roots stored in each table entry may be further reduced toone or two, with the system solving the associated degree-three anddegree-four polynomials using known "fast" techniques.

Referring now also to FIG. 3, the look-up table 22 may be arranged intwo layers, or tiers 24 and 25. The first tier 24 includes two "master"tables 26a and 26b that are associated, respectively, with b₁ =0 and b₁=1. Using b₁ ' from equation 5, the system selects a master table. Itthen enters the selected master table using b₀ '. The master tableproduces a pointer to the second tier 25 of tables 28, which are enteredusing the coefficient b₂ '. In the example, there is a one-entry mastertable 26b for b₁ '=1 that indicates there are no associated solutionsthat have five distinct roots, and a six-entry master table 26a for b₁=0 that includes pointers to five second tier tables 28, one table foreach of the values of b₀ ' that corresponds to a solution with fivedistinct roots. The master table 26a also includes a no solution entrythat corresponds to all other values of b₀ '. Three of these second-tiertables 28 each include two entries, namely, one for the associated valueof b₂ ' for which there are five distinct roots and one associated witha "no solution" value. The fourth table, which is associated with b₀'=α²⁷, includes three entries, two associated with the two possiblevalues of b₂ ' for which there are five distinct roots and oneassociated with the no solution value.

Referring now also to FIG. 4, the system finds the roots of adegree-five polynomial using the two tiers of tables by firstmanipulating the degree-five error locator polynomial to produce apolynomial of the form of equation 2 (step 400). If b₀ =0, the systemdetermines that y=0 is a root and determines the remaining roots using amethod for solving degree-four polynomials (step 404). If thecoefficient b₀ is non-zero, the system determines a value of k such that(b₀)².spsp.k =b₀ ', where b₀ ' is an element of the set S (steps 402,406). To do this the system either enters a lookup table (not shown)using b₀ to produce an associated value of k, or it calculates the valueof k by raising the coefficient b₀ of equation 2 to the 2^(k) power,where k=0, 1 . . . M-1 and determining if the result is an element ofthe set S. The system thus repeatedly squares the coefficient b₀ untilthe result is equal to one of the elements of S, or all possible valuesof k have been tried. If b₀ ².spsp.k is not an element of S, the systemdetermines that there are no solutions with five distinct roots (step407).

If a value for k can be determined, the system uses the coefficient(b₁)².spsp.k =b₁ ' to select one of the master tables 26a or 26b (steps408-410). The system then enters the selected table using (b₀)².spsp.k,and the table produces a pointer that directs the system to a selectedone of the second-tier tables 28 (step 412).

Using the coefficient b₂ ', the system enters the selected second-tiertable 28, which produces a predetermined number of roots r_(i) ' (step414). The system then, as necessary, uses the stored roots to producethe remaining roots (step 416). If four roots are stored, the systemadds them to determine the fifth root r₄ '. If fewer than four roots arestored, the system uses the stored roots to produce a polynomial ofdegree 5-j, where j is the number of stored roots, and then determinesthe remaining roots by solving this reduced-degree polynomial usingknown techniques. For example, the system may store three roots r₀ ', r₁' and r₂ ' in the table and produce a quadratic equation that it solvesusing known techniques to produce r₃ ' and r₄ '.

The system next calculates the roots r_(i) from the roots r_(i) ' byraising the roots to the -2^(k) power (step 418). It then determines theroots x=z_(i) by calculating t⁻¹ (r_(i)) for i=0, 1 . . . 4 (step 420).

Instead of using two-tiers of tables, Table 1 may be re-arranged suchthat it is addressed by a hash of the coefficients b₂ ' and b₀ '. Thetable thus becomes:

                  TABLE 2                                                         ______________________________________                                        b.sub.2 ', b.sub.0 '                                                                             Roots                                                      ______________________________________                                        0, α.sup.0   α.sup.9, α.sup.19, α.sup.21,                                α.sup.36                                             α.sup.23, α.sup.1                                                                    α.sup.22, α.sup.27, α.sup.43,                               α.sup.47                                             α.sup.20, α.sup.5                                                                    α.sup.16, α.sup.21, α.sup.40,                               α.sup.57                                             α.sup.46, α.sup.13                                                                   α.sup.24, α.sup.32, α.sup.41,                               α.sup.49                                             α.sup.0, α.sup.27                                                                    α.sup.9, α.sup.14, α.sup.23,                                α.sup.49                                             α.sup.45, α.sup.27                                                                   α.sup.6, α.sup.18, α.sup.37,                                α.sup.44                                             any other b.sub.2 ', b.sub.0 '                                                                   no solution                                                ______________________________________                                    

The coefficients b₂ ' and b₀ ' are expressed as M-bit symbols that arepowers of the primitive element α modulo the irreducible polynomial thatgenerates the field GF(2^(M)). A hashed address is formulated fromselected bits of each of the coefficient pairs listed in Table 2. If theb₂ ', b₀ ' pairs are treated as 2M columns of bits, the systempreferably uses for the hashed address the columns that contain a numberof 1s that are equal to one half of the size of the table. In theexample, the columns 11, 10 and 1 are selected and the hashed addressfor the b₂ ', b₀ ' pairs are:

    ______________________________________                                        b.sub.2 ', b.sub.0 '                                                                       M-bit symbols                                                                             hashed address                                       ______________________________________                                        0, α.sup.0                                                                           000000, 000001                                                                            000                                                  α.sup.23, α.sup.1                                                              101001, 000010                                                                            101                                                  α.sup.20, α.sup.5                                                              111100, 100000                                                                            110                                                  α.sup.46, α.sup.13                                                             110010, 001010                                                                            111                                                  α.sup.0, α.sup.27                                                              000001, 001110                                                                            001                                                  α.sup.45, α.sup.27                                                             011001, 001110                                                                            011                                                  ______________________________________                                    

The hashed addresses 010 and 100 are associated with the "no solution"entry.

If a hashed address is used, the system must check that the set of rootsextracted from the table is a solution to equation 5. The system thussubstitutes the roots into the equation.

B. Operations of the Polynomial Transform Processor

We discuss below the operations of the polynomial transform processor 14(FIG. 1), which are based on a discussion in Berlekamp's book AlgebraicCoding Theory, McGraw-Hill Book Company, 1968. The polynomial transformprocessor 14 determines how to manipulate the error locator polynomial:

    σ=x.sup.5 +a.sub.4 x.sup.4 +a.sub.3 x.sup.3 +a.sub.2 x.sup.2 +a.sub.1 x+a.sub.0                                                 [ 1]

to produce

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0           [ 2]

based, in part, on the values of the coefficients a₃ and a₄.

If a₃ and a₄ are both zero, the error locator polynomial is in the formof equation 2, with x=y. If a₄ ≠0 and a₃ =0, the system determines if a₁=a₄ ⁴, and if so sets y=a₄ +x. Substituting x=y+a₄ into the polynomial,the coefficients of equation 2 are then

b₂ =a₂

b₁ =0

b₀ =a₀ +a₄ ⁵ +a₂ *a₄ ²

If a₁ ≠a₄ and a₃ =0, the system sets ##EQU5## and the coefficients ofequation 2 are ##EQU6## where E=(a₁ +a₄ ⁴)^(1/4).

If a₃ ≠0, we let ##EQU7## and equation 1 becomes ##EQU8##

If G=0, it implies that ##EQU9## is a factor of equation 2, and thus,that the remaining roots can be determined by solving a degree-fourpolynomial.

If G≠0, we let ##EQU10## and divide the coefficients of equation 1* by Gto produce ##EQU11## The coefficient of s³ in this equation is zero andthe equation can be manipulated as discussed above, based on the valuesof the coefficients of s⁴ and s, to produce an expression in the form ofequation 2. The system next determines the roots s=r_(i) of equation 1**and transforms them first to the roots of equation 1* and then to theroots x=z_(i) of equation 1.

C. Finding Roots of Error Locator Polynomials of Degree e<5

The method of finding the roots of a degree-five error locatorpolynomial discussed above may also be used to find the roots ofpolynomials of degree e<5. As discussed below, the tables used to findthese roots include in the entries 5-e multiple roots that correspond tounused error locations.

The degree e polynomial may be multiplied by x^(5-e) to produce adegree-five polynomial. The coefficients of one or more of a₀, a₁, a₂and a₃ are then equal to zero, which implies multiple roots at x=0.Accordingly, the lookup tables must be expanded to include roots thatcorrespond to the equations with these zero-valued coefficients.

The system manipulates this degree-five polynomial as discussed aboveand the associated coefficients b₀ ' and b₂ ' are used to enter theexpanded table. The system ignores the 5-e multiple roots at x=0, anduses the remaining e roots to determine the error locations as discussedabove. Generally, the location x=0 is not used as an error location,unless the system is using an extended code. Accordingly, no errorlocation information is lost by ignoring the multiple error locations atx=0.

Indeed, the systems generally use shortened codes and there are thusmultiple unused error locations. If a code of length N is used, whereN<M-1 and 2^(M) -1-N≧4 there are unused locations that correspond toα^(-N), α⁻(N+1) . . . α⁻(2.spsp.M⁻²). Accordingly, these error locationsshould not be included in any solution to the error locator polynomial.

Using an alternative method of finding the roots of error, locatorpolynomials of degree e the system 10 makes use of these otherwiseunused error locations. The system manipulates error locator polynomialσ(x) to form:

    g(x)=σ(x)*(x+α.sup.-n)*(x+α.sup.-(n+1)) . . . (x+α.sup.-(n+5-e-1)),

which has five distinct roots over the unshortened code. The system thenmanipulates g(x) as discussed above, determines the associatedcoefficients b₀ ' and b₂ ' and enters the appropriate table. The systemignores the 5-e roots that correspond to error locations that are beyondthe length of the shortened code, that is, the roots that correspond tothe unused error locations, and uses the remaining roots to determinethe error locations.

The operations of systems for determining the roots of the error locatorpolynomial using the significantly smaller look-up tables involve amanipulation of the error locator polynomial and a transformation of theroots of the manipulated polynomial into the roots of the error locatorpolynomial. These operations are straightforward and readily implementedin hardware, software or a combination of hardware and software. Furtherthese operations are relatively quickly performed, and thus, do no slowdown the overall error correction operation.

The system has been described as including several processors. One ormore of these processors may be combined to perform one or more of thevarious operations. Alternatively, the processors discussed above may becombinations of one or more processors that together perform the variousoperations.

What is claimed is:
 1. A method of determining error locations in a datacodeword encoded over GF (2^(M)) that includes five errors, the methodincluding:A. determining a degree-five error locator polynomial σ(x)associated with the data codeword; B. manipulating the degree-five errorlocator polynomial σ(x) to produce a polynomial:

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0

where b₁ =0 or 1, and y=t(x); C. using the coefficients b₂ and b₁ toenter a 2^(2M) entry look-up table and extract from the table the rootsy=r_(i) of w(y); and D. manipulating the roots y=r_(i) to produce theroots x=z_(i) by determining x=t⁻¹ (y), where t⁻¹ () is the inverse oft().
 2. The method of claim 1 further including in the step ofextracting the roots from the table:a. extracting four roots r₀, r₁, r₂,r₃ from the table; and b. adding the four roots to produce a fifth rootr₄ =r₀ +r₁ +r₂ +r₃.
 3. The method of claim 1 further including in thestep of extracting the roots from the table:a. extracting from the tablej roots r_(i), i=0, 1 . . . j-1, and j<5; b. manipulating the rootsr_(i) to determine the roots r_(j), r_(j+1) . . . , r₄.
 4. The method ofclaim 3 further including in the step of manipulating the roots r_(i):i. manipulating the roots r_(i) to determine a polynomial ofdegree-(5-j); and ii. determining the roots r_(j), r_(j+1) . . . , r₄ bysolving the degree-(5-j) polynomial.
 5. A method of determining errorlocations in a data codeword encoded over GF (2^(M)) that includes fiveerrors, the method including:A. determining a degree-five error locatorpolynomial σ(x) associated with the data codeword; B. manipulating thedegree-five error locator polynomial σ(x) to produce a polynomial:

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0

where b₁ =0 or 1, and y=t(x); C. determining a value of k such that b₀².spsp.k =b₀ ' is an element of a set S that contains values of b₀ 'that are associated with solutions of equations of the form of w(y)=y⁵+b₂ y² +b₁ y+b₀ =0 that have five distinct roots; D. using b₀ ' and b₂².spsp.k =b₂ ' entering a look-up table and extracting roots r_(i)'=r_(i) ².spsp.k ; E. raising the roots r_(i) ' to the -2^(k) power toproduce roots y=r_(i) ; and F. producing roots x=z_(i) by determiningx=t⁻¹ (x), where t⁻¹ () is the inverse of t().
 6. The method of claim 5further including:a. in the step of extracting the roots from thelook-up table extracting four roots r₀ ', r₁ ', r₂ ', and r₃ '; and b.adding the four roots to produce a fifth root r₄ '=r₀ '+r₁ '+r₂ '+r₃ '.7. The method of claim 5 further including:a. in the step of extractingthe roots from the table extracting j roots r_(i) ', i=0, 1 . . . , j-1,and j<5; b. manipulating the roots r_(i) ' to determine the roots r_(j)', r_(j+1) ' . . . , r₄ '.
 8. The method of claim 7 further including inthe step of manipulating the roots r_(i) ':i. manipulating the rootsr_(i) ' to determine a polynomial of degree-(5-j); and ii. determiningthe roots r_(j) ', r_(j+1) ' . . . , r₄ ' by solving the degree-(5-j)polynomial.
 9. A method of determining error locations in a datacodeword encoded over GF (2^(M)) that includes five or fewer errors, themethod including:A. determining a degree-e error locator polynomial σ(x)associated with the data codeword; B. if e<5, multiplying the errorlocator polynomial by x^(5-e) to produce a degree-five error locatorpolynomial; C. manipulating the degree-five error locator polynomial toproduce a polynomial:

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0

where b₁ =0 or 1, and y=t(x); D. determining a value of k such that b₀².spsp.k =b₀ ' is an element of a set S that contains values of b₀ 'that are associated with solutions of equations of the form of w(y)=y⁵+b₂ y² +b₁ y+b₀ =0 that have five distinct roots; E. using b₀ ' and b₂².spsp.k =b₂ ' entering a look-up table and extracting roots r_(i)'=r_(i) ².spsp.k ; F. raising the roots r_(i) ' to the -2^(k) power toproduce roots y=r_(i) ; G. producing roots x=z_(i) by determining x=t⁻¹(x), where t^(-l) () is the inverse of t(); and H. ignoring multipleroots at x=0.
 10. A method of determining error locations in a datacodeword that includes five or fewer errors, the data codeword beingencoded using a shortened code over GF (2^(M)), the method including thesteps of:A. determining a degree-e error locator polynomial σ(x)associated with the data codeword; B. if e<5, manipulating the errorlocator polynomial to produce g(x)=σ(x)*(x+α^(-n))*(x+α.sup.(-n+1)) . .. *(x+α⁻(n+5-e-1)), C. manipulating g(x) to produce a polynomial:

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0

where b₁ =0 or 1, and y=t(x); D. determining a value of k such that b₀².spsp.k =b₀ ' is an element of a set S that contains values of b₀ 'that are associated with solutions of equations of the form of w(y)=y⁵+b₂ y² +b₁ y+b₀ =0 that have five distinct roots over an associatedunshortened code; E. using b₀ ' and b₂ ².spsp.k '=b₂ ' entering alook-up table and extracting roots r_(i) =r_(i) ².spsp.k ; F. raisingthe roots r_(i) ' to the -2^(k) power to produce roots y=r_(i) ; G.producing roots x=z_(i) by determining x=t⁻¹ (x), where t⁻¹ () is theinverse of t(); and H. ignoring roots that correspond to unused errorlocations.
 11. A method of producing a look-up table for use indetermining the error locations in a data codeword with five or fewererrors encoded over GF(2^(M)), the method including the steps of:A.determining, for an equation of the form

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0 =0

where b₁ =0 or 1, the associated values of b₂, b₁, and b₀ thatcorrespond to solutions with five distinct roots; B. segmentingGF(2^(M)) into conjugate classes and determining a subset of C classesthat contain the values of b₀ determined in step A; C. select acorresponding member b₀ ' of each of the C conjugate classes torepresent the classes; D. determine values of b₂ that correspond to theC selected values of b₀ ' and are associated with solutions of w(y) thathave five distinct roots; E. producing the table by including therein atlocations that are addressed by b₀ ' and b₂ ' the solutions of w(y) thathave five distinct roots.
 12. The method of claim 11 including in thestep of producing the table, including the solutions in the table atlocations that are addressed by an address that is a hash of b₂ ', b₀ '.13. The method of claim 12 further including in the step of producingthe table producing the addresses by concatenating the M-bit symbols b₂' and b₀ ' to produce 2M columns and selecting for use in the addressthe columns that contain a number of binary 1s that is approximatelyequal to one-half the number of entries in the table.
 14. The method ofclaim 11 including in the step of producing the table, including thesolutions in the table at locations that are addressed by an addressthat is a concatenation of b₀ ' and b₂ '.
 15. The method of claim 11including in the step of producing the table, producing the table as aset of tiered sub-tables, with one tier corresponding the values of b₀ 'and including pointers to the second tier and the second tier includingsub-tables that correspond to the selected values of b₀ ' and eachincluding entries that correspond to the associated values of b₂ '. 16.A system of determining error locations in a data codeword encoded overGF(2^(M)) that includes five errors, the system including:A. means fordetermining a degree-five error locator polynomial σ(x) associated withthe data codeword; B. means for manipulating the degree-five errorlocator polynomial σ(x) to produce a polynomial:

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0

where b₁ =0 or 1, and y=t(x); C. a 2^(2M) entry lookup table thatincludes solutions to w(y) that have five distance roots; D. addressingmeans for using the coefficients b₂ and b₁ to enter the 2^(2M) entrylook-up table and extract from the table the roots y=r_(i) of w(y); andE. means for manipulating the roots y=r_(i) to produce the roots x=z_(i)by determining x=t⁻¹ (y), where t⁻¹ () is the inverse of t().
 17. Thesystem of claim 16 wherein the lookup table has stored four roots r₀,r₁, r₂, r₃ and includes an adder for adding the four roots to produce afifth root r₄ =r₀ +r₁ +r₂ +r₃.
 18. The system of claim 16 wherein thelookup table has stored j roots r_(i), i=0, 1 . . . j-1, with j<5 andthe system further includes means manipulating the stored roots r_(i) todetermine the roots r_(j), r_(j+1) . . . , r₄.
 19. The system of claim18 further including in the means for manipulating the stored roots:i.means for manipulating the roots r_(i) to determine a polynomial ofdegree-(5-j); and ii. means of determining the roots r_(j), r_(j+1) . .. , r₄ by solving the degree-(5-j) polynomial.
 20. A system fordetermining error locations in a data codeword encoded over GF (2^(M))that includes five errors, the system including:A. means for determininga degree-five error locator polynomial σ(x) associated with the datacodeword; B. means for manipulating the degree-five error locatorpolynomial σ(x) to produce a polynomial:

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0

where b₁ =0 or 1, and y=t(x); C. means for determining a value of k suchthat b₀ ².spsp.k =b₀ ' is an element of a set S that contains values ofb₀ ' that are associated with solutions of equations of the form ofw(y)=y⁵ +b₂ y² +b₁ y+b₀ =0 that have five distinct roots; D. a C elementlookup table, where C is associated with the number of conjugate classesthat contain solutions to w(y) that include five distinct roots; D.address means for entering the lookup table, addressing means using b₀ 'and b₂ ².spsp.k =b₂ ' to enter the table and extract the roots r_(i)'=r_(i) ².spsp.k ; E. means for raising the roots r_(i) ' to the -2^(k)power to produce roots y=r_(i) ; and F. means for producing rootsx=z_(i) by determining x=t⁻¹ (x), where t⁻¹ () is the inverse of t().21. The system of claim 20 wherein the lookup table includes for eachentry four roots r₀ ', r₁ ', r₂ ', and r₃ ', the system furtherincluding an adder that adds the four roots to produce a fifth root r₄'=r₀ '+r₁ '+r₂ '+r₃ '.
 22. The system of claim 20 wherein the lookuptable includes for each entry j roots r_(i) ', i=0, 1 . . . , j-1, withj<5 and the system further includes means for manipulating the rootsr_(i) ' to determine the roots r_(j) ', r_(j+1) ' . . . , r₄ '.
 23. Thesystem of claim 22 wherein the means for manipulating the roots r_(i) 'manipulate the roots r_(i) ' to determine a polynomial of degree-(5-j),and determines the roots r_(j) ', r_(j+1) ' . . . , r₄ ' by solving thedegree-(5-j) polynomial.
 24. A system for determining error locations ina data codeword encoded over GF (2^(M)) that includes five or fewererrors, the method including:A. means for determining a degree-e errorlocator polynomial σ(x) associated with the data codeword, the meansmultiplying the error locator polynomial by x^(5-e) to produce adegree-five error locator polynomial if e<5; B. means for manipulatingthe degree-five error locator polynomial to produce a polynomial:

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0

where b₁ =0 or 1, and y=t(x); C. means for determining a value of k suchthat b₀ ².spsp.k b₀ ' is an element of a set S that contains values ofb₀ ' that are associated with solutions of equations of the form ofw(y)=y⁵ +b₂ y² +b₁ y+b₀ =0 that have five distinct roots; D. a C elementlookup table, where C is associated with the number of conjugate classesthat contain solutions to w(y) that include five distinct roots; E.addressing means for entering the lookup table, the addressing meansusing b₀ ' and b₂ ².spsp.k =b₂ ' to enter the table and extract rootsr_(i) '=r_(i) ².spsp.k ; F. means for raising the roots r_(i) ' to the-2^(k) power to produce roots y=r_(i) ; G. means for producing rootsx=z_(i) by determining x=t⁻¹ (x), where t⁻¹ () is the inverse of t(),the means ignoring multiple roots at x=0.
 25. A system for determiningerror locations in a data codeword that includes five or fewer errors,the data codeword being encoded using a shortened code over GF (2^(M)),the system including:A. means for determining a degree-e error locatorpolynomial σ(x) associated with the data codeword, the meansmanipulating the error locator polynomial to produceg(x)=σ(x)*(x+α^(-n))*(x+α⁻(n+1)) . . . *(x+α⁻ (n+5-e-1)), if e<5; B.means for manipulating g(x) to produce a polynomial:

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0

where b₁ =0 or 1, and y=t(x); C. a C element lookup table, where C isassociated with the number of conjugate classes that contain solutionsto w(y) that include five distinct roots; D. means for determining avalue of k such that b₀ ².spsp.k =b₀ ' is an element of a set S thatcontains values of b₀ ' that are associated with solutions of equationsof the form of w(y)=y⁵ +b₂ y² +b₁ y+b₀ =0 that have five distinct rootsover an associated unshortened code; E. addressing means entering thelook-up table for using b₀ ' and b₂ ².spsp.k =b₂ ' to enter a look-uptable and extract roots r_(i) '=r_(i) ².spsp.k ; F. means for raisingthe roots r_(i) ' to the -2^(k) power to produce roots y=r_(i) ; G.means for producing roots x=z_(i) by determining x=t⁻¹ (x), where t⁻¹ ()is the inverse of t(), the means ignoring roots that correspond tounused error locations.
 26. A system for producing a look-up table foruse in determining the error locations in a data codeword with five orfewer errors encoded over GF(2^(M)), the system including:A.manipulation means for determining, for an equation of the form

    w(y)=y.sup.5 +b.sub.2 y.sup.2 +b.sub.1 y+b.sub.0

where b₁ =0 or 1, the associated values of b₂, b₁, and b₀ thatcorrespond to solutions with five distinct roots; B. means forsegmenting GF(2^(M)) into conjugate classes and determining a subset ofC classes that contain the values of b₀ determined the manipulationmeans; C. means for selecting a corresponding member b₀ ' of each of theC conjugate classes to represent the classes; D. means for determiningvalues of b₂ that correspond to the C selected values of b₀ ' and areassociated with solutions of w(y) that have five distinct roots; E.addressed storage location means for producing the table by includingtherein at locations that are addressed by b₀ ' and b₂ ' the solutionsof w(y) that have five distinct roots.
 27. The system of claim 26wherein the addressed storage location means includes the solutions inthe table at locations that are addressed by a hash of b₂ ', b₀ '. 28.The system of claim 27 wherein the addressed storage location meansfurther includes the solutions in the table at locations that areaddressed by concatenating the M-bit symbols b₂ ' and b₀ ' to produce 2Mcolumns and selecting for use in the address the columns that contain anumber of binary is that is approximately equal to one-half the numberof entries in the table.
 29. The system of claim 26 wherein theaddressed storage location means further includes the solutions in thetable at locations that are addressed by a concatenation of the symbolsb₀ ' and b₂ '.
 30. The system of claim 26 wherein the addressed storagelocation means further includes means for producing the table as a setof tiered sub-tables, with one tier corresponding the values of b₀ ' andincluding pointers to the second tier and the second tier includingsub-tables that correspond to the selected values of b₀ ' and eachincluding entries that correspond to the associated values of b₂ '.